package com.cloudkinto.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;

import java.util.Date;
import java.io.Serializable;

import com.cloudkinto.enumType.order.outbound.WaveStatusEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * <p>
 * 出库波次
 * </p>
 *
 * @author long
 * @since 2024-12-03
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("t_outbound_wave")
public class OutboundWaveDo extends Model<OutboundWaveDo> {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    @TableField(value = "tenant_id", fill = FieldFill.INSERT)
    private Long tenantId;

    @TableField(value = "wh_id", fill = FieldFill.INSERT)
    private Long whId;

    /**
     * 波次号
     */
    @TableField("wave_no")
    @ApiModelProperty("波次号")
    private String waveNo;

    /**
     * 状态 {@link WaveStatusEnum}
     */
    @TableField("status")
    @ApiModelProperty("状态 0待拣货 1拣货中 2 已拣货")
    private Integer status;

    /**
     * 拣货数量
     */
    @TableField("picking_qty")
    @ApiModelProperty("拣货数量")
    private Integer pickingQty;

    /**
     * 应拣数量
     */
    @TableField("should_picking_qty")
    @ApiModelProperty("应拣数量")
    private Integer shouldPickingQty;

    /**
     * 波次品种类型
     */
    @TableField("wave_variety_type")
    @ApiModelProperty("波次品种类型 1一单一件 2一单多件")
    private Integer waveVarietyType;

    /**
     * 订单数量
     */
    @TableField("order_num")
    @ApiModelProperty("订单数量")
    private Integer orderNum;

    /**
     * 出库订单数量
     */
    @TableField("outbound_order")
    @ApiModelProperty("出库订单数量")
    private Integer outboundOrder;

    /**
     * 拣货员
     */
    @TableField("picker")
    @ApiModelProperty("拣货员")
    private Long picker;

    /**
     * 拣货单打印 0否 1是
     */
    @TableField("pick_list_printing")
    @ApiModelProperty("拣货单打印 0否 1是")
    private Boolean pickListPrinting;

    /**
     * 二次分拣 0否 1是
     */
    @TableField("secondary_sorting")
    @ApiModelProperty("二次分拣 0否 1是")
    private Boolean secondarySorting;

    /**
     * 复核 0否 1是
     */
    @TableField("recheck")
    @ApiModelProperty("复核 0否 1是")
    private Boolean recheck;

    /**
     * 出库 0否 1是
     */
    @TableField("outbound")
    @ApiModelProperty("出库 0否 1是")
    private Boolean outbound;


    @TableField(value = "create_by", fill = FieldFill.INSERT)
    @ApiModelProperty("创建人")
    private Long createBy;

    @TableField(value = "create_by_name", fill = FieldFill.INSERT)
    @ApiModelProperty("创建人")
    private String createByName;

    /**
     * 创建时间
     */
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    @ApiModelProperty("创建时间")
    private Date createTime;

    /**
     * 拣货完成时间
     */
    @TableField("pick_time")
    @ApiModelProperty("拣货完成时间")
    private Date pickTime;

    /**
     * 二次分拣完成时间
     */
    @TableField("secondary_sorting_time")
    @ApiModelProperty("二次分拣完成时间")
    private Date secondarySortingTime;

    /**
     * 复核完成时间
     */
    @TableField("recheck_time")
    @ApiModelProperty("复核完成时间")
    private Date recheckTime;

    /**
     * 出库时间
     */
    @TableField("outbound_time")
    @ApiModelProperty("出库完成时间")
    private Date outboundTime;


    @Override
    protected Serializable pkVal() {
        return this.id;
    }

}
